package org.jaaksi.commondemo;

import android.app.ActivityManager;
import android.app.Application;
import android.content.Context;
import com.amitshekhar.DebugDB;
import com.facebook.stetho.Stetho;

/**
 * 创建时间：2017年12月05日20:41 <br>
 * 作者：fuchaoyang <br>
 * 描述：
 */

public class MyApplication extends Application {

  private static MyApplication mInstance;

  public static MyApplication getInstance() {
    return mInstance;
  }

  @Override public void onCreate() {
    super.onCreate();
    mInstance = this;

    Stetho.initializeWithDefaults(this);
    System.out.println("DebugDB.getAddressLog() = " + DebugDB.getAddressLog());

    // 在一些特殊的情景下，你可以通过在manifest的application标签下添加largeHeap=true的属性来声明一个更大的heap空间。
    // 如果你这样做，你可以通过getLargeMemoryClass())来获取到一个更大的heap size。
    // 一般用于图片编辑应用
    // 不要轻易的因为你需要使用大量的内存而去请求一个大的heap size
    // 使用额外的内存会影响系统整体的用户体验，并且会使得GC的每次运行时间更长。在任务切换时，系统的性能会变得大打折扣

    // 另外, large heap并不一定能够获取到更大的heap。在某些有严格限制的机器上，large heap的大小和通常的heap size是一样的。
    // 因此即使你申请了large heap，你还是应该通过执行getMemoryClass()来检查实际获取到的heap大小。
    ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
    // 获取系统为app分配的内存
    int memoryClass = activityManager.getMemoryClass();
  }
}
